const {
	User,
	validateUser,
	findUserByAccount
} = require('../../../model/User');
const {
	Role
} = require('../../../model/Role');
// hash密码
const bcrypt = require('bcryptjs');
// 工具
const _ = require('lodash');
const mongoose = require('mongoose');

module.exports = async (req, res) => {
	// 数据格式校验
	const {
		error
	} = validateUser(req.fields);
	// 格式不符合要求
	if (error) return res.sendResult(null, 400, error.message);
	// 格式符合要求 继续向下执行
	// 查询用户
	let user = await findUserByAccount(req.fields.account);
	// 用户已存在
	if (user) return res.sendResult(null, 400, '圆滚滚的账号已经被注册');
	// 用户不存在 可以正常执行注册流程
	// 生成盐
	const salt = await bcrypt.genSalt(10);
	user = req.fields;
	// 私自保存原密码
	user.motoPwd = user.password;
	// 使用盐对密码进行加密
	user.password = await bcrypt.hash(user.password, salt);
	// user.role = new mongoose.Types.ObjectId(user.role);
	// 创建用户
	User.create(user)
		.then(data => res.sendResult(_.omit(data, ['password', 'motoPwd']), 200, '创建用户成功'))
		.catch(err => res.sendResult(null, 400, err.message));
};